widget: Connect to GdkSurface::event
authorMatthias Clasen <mclasen@redhat.com>
Sat, 23 Feb 2019 18:49:28 +0000 (13:49 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 23 Feb 2019 19:13:57 +0000 (14:13 -0500)
This lets us handle input events the same way
we do expose events.

gtk/gtkwidget.c

index a3a46f739fadc0cfaff77941c6ae5d8f61a89c71..ce60607a165a3723ddfe4d0b6d0abd0c68a650d7 100644 (file)
@@ -11426,6 +11426,16 @@ surface_expose (GdkSurface     *surface,
   return TRUE;
 }
 
+static gboolean
+surface_event (GdkSurface *surface,
+               GdkEvent   *event,
+               GtkWidget  *widget)
+{
+  gtk_main_do_event (event);
+
+  return TRUE;
+}
+
 /**
  * gtk_widget_register_surface:
  * @widget: a #GtkWidget
@@ -11455,6 +11465,7 @@ gtk_widget_register_surface (GtkWidget    *widget,
   gdk_surface_set_user_data (surface, widget);
 
   g_signal_connect (surface, "render", G_CALLBACK (surface_expose), widget);
+  g_signal_connect (surface, "event", G_CALLBACK (surface_event), widget);
 }
 
 /**
@@ -11480,6 +11491,7 @@ gtk_widget_unregister_surface (GtkWidget    *widget,
   gdk_surface_set_user_data (surface, NULL);
 
   g_signal_handlers_disconnect_by_func (surface, surface_expose, widget);
+  g_signal_handlers_disconnect_by_func (surface, surface_event, widget);
 }
 
 /**